package com.snacks.data;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

/**
 * TODO Class lấy dữ liệu từ sever về
 */

public class DataFromHttpSever {
	private static InputStream is = null;
	private static StringBuilder sb;
	private static String result = "";	
	
	static JSONObject jArray = null;
	static JSONArray jArrayload=null;

	@SuppressWarnings("javadoc")
	
	public DataFromHttpSever(){
		
	}
	public String getDataFromHttpSever(ArrayList<NameValuePair> reques,
			String urlWebsevice) {
		// Kết nối tới WebS thông qua Http post
		try {
			Log.i("log_tag", "Đang kết nối tới sever...");
			HttpClient httpclient = new DefaultHttpClient();
			HttpPost httppost = new HttpPost(urlWebsevice);

			if (reques != null) {
				Log.i("log_tag", "Gửi đi Dữ liệu" + String.valueOf(reques));
				httppost.setEntity(new UrlEncodedFormEntity(reques));
			}
			HttpResponse response = httpclient.execute(httppost);
			HttpEntity entity = response.getEntity();
			this.is = entity.getContent();

		} catch (IOException e) {
			Log.e("log_tag", "Lỗi kết nối:" + e.toString());
		} catch (Exception e) {
			Log.e("log_tag", "Lỗi kết nối:" + e.toString());
		}

		// Đọc dữ liệu lấy về từ WebS
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					this.is, "iso-8859-1"), 8);
			this.sb = new StringBuilder();
			this.sb.append(reader.readLine() + "\n");
			String line = "";

			// TODO Cần chỉnh lại sao cho chỉ cần đọc dữ liệu trên một dòng duy
			// nhất
			// Bởi vì trên host còn có quảng cáo nữa
			// Lưu ý dữ liệu trả về chỉ nằm trên một dòng
			this.sb.append(line + "\n");
			this.is.close();
			this.result = this.sb.toString();
			Log.i("log_tag", "Dữ liệu:" + this.result);
		} catch (Exception e) {
			Log.e("log_tag", "Lỗi đọc dữ liệu từ webservice" + e.toString());
		}
		// Trả về kiểu text của dữ liệu đã được định dạng theo chuẩn JSON trên
		// WebS
		return this.result;
	}

	public static JSONArray getJSONfromURL(String url) {

		// http post
		try {
			HttpClient httpclient = new DefaultHttpClient();
			HttpPost httppost = new HttpPost(url);
			HttpResponse response = httpclient.execute(httppost);
			HttpEntity entity = response.getEntity();
			is = entity.getContent();

		} catch (Exception e) {
			Log.e("log_tag", "Error in http connection " + e.toString());
		}

		// convert response to string
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					is, "iso-8859-1"), 8);
			StringBuilder sb = new StringBuilder();
			String line = null;
			while ((line = reader.readLine()) != null) {
				sb.append(line + "\n");
			}
			is.close();
			result = sb.toString();
		} catch (Exception e) {
			Log.e("log_tag", "Error converting result " + e.toString());
		}

		try {

			jArrayload = new JSONArray(result);
		} catch (JSONException e) {
			Log.e("log_tag", "Error parsing data " + e.toString());
		}

		return jArrayload;
	}

}
